home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Software für Mac-OS X / Entwickler-Tools / netbeans / modules / ext / djava.jar / koala / dynamicjava / interpreter / modifier / ObjectFieldModifier.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-03-14  |  1.7 KB  |  44 lines

  1. package koala.dynamicjava.interpreter.modifier;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6. import koala.dynamicjava.interpreter.context.Context;
  7. import koala.dynamicjava.interpreter.error.CatchedExceptionError;
  8. import koala.dynamicjava.tree.ObjectFieldAccess;
  9. import koala.dynamicjava.tree.visitor.Visitor;
  10.  
  11. public class ObjectFieldModifier extends LeftHandSideModifier {
  12.    protected Field field;
  13.    protected ObjectFieldAccess node;
  14.    protected Object fieldObject;
  15.    protected List fields = new LinkedList();
  16.  
  17.    public Object prepare(Visitor var1, Context var2) {
  18.       this.fields.add(0, this.fieldObject);
  19.       this.fieldObject = this.node.getExpression().acceptVisitor(var1);
  20.  
  21.       try {
  22.          return this.field.get(this.fieldObject);
  23.       } catch (Exception var4) {
  24.          throw new CatchedExceptionError(var4, this.node);
  25.       }
  26.    }
  27.  
  28.    public void modify(Context var1, Object var2) {
  29.       try {
  30.          this.field.set(this.fieldObject, var2);
  31.       } catch (Exception var8) {
  32.          throw new CatchedExceptionError(var8, this.node);
  33.       } finally {
  34.          this.fieldObject = this.fields.remove(0);
  35.       }
  36.  
  37.    }
  38.  
  39.    public ObjectFieldModifier(Field var1, ObjectFieldAccess var2) {
  40.       this.field = var1;
  41.       this.node = var2;
  42.    }
  43. }
  44.